iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0
自我挑戰組

Codewars Ruby Challenge in 30 Days系列 第 13

Codewars Ruby Challenge - Day 13/30

  • 分享至 

  • xImage
  •  

學習

1.count 方法可以加入條件:count 不只能做 array.count 計算個數,還可以加入篩選條件,如 string.count('aeoiu'),計算 string 中符合「a」「e」「i」「o」「u」的個數有幾個


題目:

# 計算有幾個母音字母(a, e, i, o, u)

def vowel_count(string)
  # 實作內容
end

答案需要過以下測試:

RSpec.describe do
  it "計算有幾個母音字母" do
    expect(vowel_count("abracadabra")).to be 5
    expect(vowel_count("5xruby")).to be 1
    expect(vowel_count("iloveyou")).to be 5
  end
end

我的答案

def vowel_count(string)
  string.chars.select { |n| n == 'a' || n == 'e' || n == 'i' || n == 'o' || n == 'u'}.count
end

思路:

  1. 第一直覺一定有簡單的方法,但…我想不到,只好用會的東西拼錯
  2. 先用 chars 把長長的字串拆成字元,丟進陣列
  3. 用 select 篩選符合母音的,最後再用 count 計算數量

龍哥建議的答案

def vowel_count(string)
  string.count('aeiou')
end

(可…可惡,果然有超簡單的方法)


上一篇
Codewars Ruby Challenge - Day 12/30
下一篇
Codewars Ruby Challenge - Day 14/30
系列文
Codewars Ruby Challenge in 30 Days30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言